package cn.com.huzo.repository.manufacture;

import cn.com.huzo.model.entities.manufacture.CommissionProcessingContractLinesEntity;
import huzofw.repository.GenericRepository;
import java.util.List;

/**
 * 加工承揽合同-合同明细数据访问对象接口。
 *
 * @author 吴旭
 */
public interface CommissionProcessingContractLinesRepository extends GenericRepository<CommissionProcessingContractLinesEntity, String> {

    /**
     * 根据主记录ID取得加工承揽合同 明细子记录数据。
     *
     * @param headerKey 主记录ID
     * <p>
     * @return 加工承揽合同 明细子记录数据
     */
    List<CommissionProcessingContractLinesEntity> fetchByHeaderKey(Long headerKey);

    /**
     * 取得加工承揽合同之合同明细记录数据。
     *
     * @param itemList 主记录ID列表
     * <p>
     * @return 加工承揽合同 明细子记录数据
     */
    List<CommissionProcessingContractLinesEntity> fetchLinesForCmtStatistics(List<CommissionProcessingContractLinesEntity> itemList);

    /**
     * 新增加工明细记录数据。
     *
     * @param headerId 加工承揽合同标识
     * @param createdBy 作成者
     * @param updatedBy 更新者
     * @return 影响的行数
     */
    Integer insert(Long headerId, Long createdBy, Long updatedBy);

    /**
     * 同步加工明细中的加工数量
     *
     * @param headerId 合同标识
     * @param updatedBy 更新者
     * @return
     */
    Integer updateForSyncQuantity(Long headerId, Long updatedBy);

    /**
     * 删除合同明细表，同步加工明细。
     *
     * @param headerKey 加工合同标识
     * @return
     */
    Integer deleteForSyncLinesMo(Long headerKey);
}
